package org.freelancer.app.services;


import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import org.freelancer.app.dao.ProductosDao;
import org.freelancer.app.dao.VentaTemporalDao;
import org.freelancer.app.models.Productos;
import org.freelancer.app.models.Venta;
import org.freelancer.app.models.VentaTemporal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("manejoproductosmanager")
public class ManejoProductosManager {

        private List<Productos> productos; 
        private VentaTemporal ventatemp;
        private List<VentaTemporal> cbventatemporallist, sumatotal;
      
        @Autowired
        private ProductosDao productosdao;
        @Autowired
        private VentaTemporalDao ventatempdao;
        
        @Transactional
        public List<VentaTemporal> ventaTemporalManager(){
        	return ventatempdao.ventaTemporalDao();
        }
       
        @Transactional
        public void comprobarcbyregistrarventa(Long k){
                productos=productosdao.productosporCbDao(k);
                cbventatemporallist=ventatempdao.comprobarcbvtatemporal(k);
                Iterator<Productos> it=productos.iterator();
        if(!cbventatemporallist.contains(k)){
                Productos p=null;      
                Object prdo=it.next();
                        p=(Productos)prdo;      
               
                        ventatemp=new VentaTemporal();
                        ventatemp.setCb(p.getCb());
                        ventatemp.setDescripcion(p.getDescripcion());
                        ventatemp.setPrecioventa(p.getPrecioventa());
                        ventatemp.setCantidad(1);
                        ventatemp.setTotal(ventatemp.getPrecioventa()*ventatemp.getCantidad());
//                        ventatemp.setExistencia(p.get);
                        ventatempdao.guardarVentaTemporal(ventatemp);  
                        }else{
                                ventatempdao.acutalizarVtasTemporales(k);
                        }
                                               
        } 
       
        @Transactional
        public int finalizarVentamanager(){
                GregorianCalendar g=new GregorianCalendar();
                int yyyy=g.get(GregorianCalendar.YEAR);
                int mm=g.get(GregorianCalendar.MONTH);
                int dd=g.get(GregorianCalendar.DAY_OF_MONTH);
                int h=g.get(GregorianCalendar.HOUR_OF_DAY);
                int m=g.get(GregorianCalendar.MINUTE);
                int s=g.get(GregorianCalendar.SECOND);
               
                Date date=g.getTime();
             
                Random rd=new Random();
                long numa=rd.nextInt(10000);
                String n1=String.valueOf(numa);
                String n2=n1+""+String.valueOf(yyyy+""+mm+""+dd+""+h+""+m+""+s);
                Venta venta=new Venta();
                List<VentaTemporal> vtatemp=ventatempdao.ventaTemporalDao();
                Iterator<VentaTemporal> it=vtatemp.iterator();
               
                while(it.hasNext()){
                        VentaTemporal objv=it.next();
                        venta.setCb(objv.getCb());
                        venta.setDescripcion(objv.getDescripcion());
                        venta.setCantidad(objv.getCantidad());
                        venta.setPrecioventa(objv.getPrecioventa());
                        venta.setTotal(objv.getTotal());
                        venta.setTransaccion(Long.parseLong(n2));
                        venta.setFecha(date);
                        venta.setHora(Long.parseLong(""+h+""+m+""+s));
//                        ventad.finalizarVentadao(venta);
                       
                }
                return 0;
//                ventad.borrarventatemporal();
        }
       
        @Transactional
        public List<VentaTemporal> sumatotalmanager(){
                return sumatotal=ventatempdao.sumaTotal();
        }
       

        public ProductosDao getProductosdao() {
                return productosdao;
        }

        public void setProductosdao(ProductosDao productosdao) {
                this.productosdao = productosdao;
        }

        public VentaTemporalDao getVentatempdao() {
                return ventatempdao;
        }

        public void setVentatempdao(VentaTemporalDao ventatempdao) {
                this.ventatempdao = ventatempdao;
        }

        public List<VentaTemporal> getSumatotal() {
                return sumatotal;
        }

        public void setSumatotal(List<VentaTemporal> sumatotal) {
                this.sumatotal = sumatotal;
        }
       
       
        }

